package org.forever.util
{
	/**
	* （有向）图基于BFS的最短距离算法
	*/
	public class BFSDistance extends BFS
	{
		public function BFSDistance(g:Graph)
		{
			super(g);
		}
		
		/**顶点访问操作：在本算法中，info是顶点v的前驱*/
		override protected function visit( v:Vertex, info:Object):Object	{
			if (null == info)//v为BFS的起始顶点
				v.setDistance(0);
			else{
				v.setDistance((info as Vertex).getDistance()+1);//设置v到s的距离 = 前驱的距离+1
			}
			return null;
		}
		
		/**基于BFS实现的最短距离算法：s为起始顶点，info向算法传递参数*/
		public function algorithm( s:Vertex,  info:Object):Object {
			reset(s);
			traverse(s, info);//BFS：到起点的最短距离记录在各顶点的distance域中
			return null;
		}
		
	}
}